﻿// *************************************************************************************************
// Project: RealSense.Light.Contracts
// Namespace: RealSense.Light.Contracts
// File: ISpeechSynthesizer.cs  Author: Peter O'Hanlon
// Copyright © Peter O'Hanlon 2014-2015
// Date: 2015/1/6 18:25
// *************************************************************************************************

using System;
namespace RealSense.Light.Contracts
{
  /// <summary>
  /// Fluent methods to control the speech synthesizer.
  /// </summary>
  public interface ISpeechSynthesizer 
  {
    /// <summary>
    /// Speak the text out loud.
    /// </summary>
    /// <param name="text">The text to say.</param>
    void Say(string text);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="module"></param>
    /// <returns>The current speech synthesizer instance.</returns>
    ISpeechSynthesizer SetSpeechModule(string module);

    /// <summary>
    /// Set the volume to play the text at.
    /// </summary>
    /// <param name="volume">The volume, between 0 and 100.</param>
    /// <returns>The current speech synthesizer instance.</returns>
    ISpeechSynthesizer SetVolume(int volume);

    /// <summary>
    /// The pitch of the voice.
    /// </summary>
    /// <param name="pitch">The pitch, between 50 and 200.</param>
    /// <returns>The current speech synthesizer instance.</returns>
    ISpeechSynthesizer SetPitch(int pitch);

    /// <summary>
    /// The rate of speech. A higher rate means a faster way of speaking.
    /// </summary>
    /// <param name="speechRate">The rate of speech.</param>
    /// <returns>The current speech synthesizer instance.</returns>
    ISpeechSynthesizer SetSpeechRate(int speechRate);
  }
}